/* *****************************************************************************
 * JFab (http://code.google.com/p/jfab)
 * Copyright (c) 2011 JFab.org
 * Admin jfab@jeffreythompson.net
 *
 * See the file "LICENSE.txt" for information on usage and redistribution of
 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 * *****************************************************************************/


package org.jfab.core;

import org.jfab.core.model.CGCompilationUnit;
import org.jfab.core.model.CGSpec;

import java.io.File;


/**
 * Defines methods required by an application to reverse engineer source files.
 */
public interface ReverseEngineer
{
    /**
     * @param   file  Source code file.
     *
     * @return  a code generator representation of the given file.
     */
    CGCompilationUnit reverseEngineerCodeFile(File file);

    /**
     * @param   directory  Directory.
     *
     * @return  a code generator representation of classes in the given
     *          directory.
     */
    CGSpec reverseEngineerCodeFilesInDirectory(File directory);
}
